function TagManager(app) {

	var self = this;
	this.tags = [];
	this.bookId = null;

	$.subscribe('tags-request', function(event, caller) {
		caller.updateFn(self.tags);
	});

	this.loadTags = function(bookId) {
		if(bookId !== undefined) {
			this.bookId = bookId;
		}
		app.showProgress('Загрузка тегов ...');
		$.ajax({
			url: 'service/tags/read.txt',
			data: { bookId: bookId },
			async: true,
			cache: false,
			success: function (data, status, xhr) {
				self.tags.length = 0;
				var response = jQuery.parseJSON(data);
				$.each(response.items, function(index, tag) {
					self.tags.push(new Tag(tag.id, tag.name, tag.frequency));
				});
				$.publish('tags-loaded', { items: self.tags });
				app.showNotification('Теги загружены', 1000);
			},
			error: function () {
				app.showError('Ошибка при загрузке тегов', 'Не удалось загрузить теги книги');
			}
		});
	};
};